package dados;

import java.util.Date;
import java.util.List;

import javax.persistence.*;

import basicas.Pagamento;
import basicas.Pagamento.FormaPagamento;

public class DAOPagamento extends DAOGenerico<Pagamento> implements IDAOPagamento{

	@Override
	public List<Pagamento> listarPagamentosPorPeriodo(Date dataInicial, Date dataFinal) throws Exception {
		try{
			TypedQuery<Pagamento> query = entityManager.createQuery("from Pagamento e where e.dataPagamento between :inicial and :final", Pagamento.class);
			query.setParameter("inicial", dataInicial);
			query.setParameter("final", dataFinal);
			return  query.getResultList();
			}catch(NoResultException x){
				return null;
			}
	}

	@Override
	public List<Pagamento> listarPagamentosPorValor(String oper, double valor) throws Exception {
		try{
			TypedQuery<Pagamento> query = entityManager.createQuery("from Pagamento e where e.valor oper :valor", Pagamento.class);
			query.setParameter("operacao", oper);
			query.setParameter("val", valor);
			return  query.getResultList();
			}catch(NoResultException x){
				return null;
			}
	}

	@Override
	public List<Pagamento> listarPagamentosPorTipo(FormaPagamento forma) throws Exception {
		try{
			TypedQuery<Pagamento> query = entityManager.createQuery("from Pagamento e where e.forma_pagamento = :formaPgto", Pagamento.class);
			query.setParameter("formaPgto", forma);
			return  query.getResultList();
			}catch(NoResultException x){
				return null;
			}
	}

}
